using System;

namespace UraniaLib
{
	/// <summary>
	/// Summary description for clsAstrodouble.
	/// </summary>
	public class UraniaConstants
	{
		public UraniaConstants()
		{
		}

		//General public static doubleants
		public static double cAU = 149597900000;                //AU in m
		public static double cParsec = 3.261633;                //Parsecs in light year
		public static double cLightSpeed = 299792500;           //Light speed in m
		public static double cLightYear = 9.46053E+15;          //Light year (m)
		public static double cG = 0.0000000000667;              //Gravitational 

		public static double cGalNPoleRA = 192.25;              //Galactic North Pole RA Epoch 1950.0
		public static double cGalNPoleDecl = 27.4;              //Galactic North Pole Decl Epoch 1950.0
		public static double cGalPlaneAscNode = 33;             //Galactic Plane Asc Node (l)Epoch 1950.0

		//Elemental public static doubleants
		public static double cProtonMass = 1.67352E-27;         //Mass of proton (kg)


		//The Sun
		public static double cSolarMass = 1.989E+30;            //Solar mass (kg)
		public static double cSolarRadius = 695990000.0;        //Solar radius (m)
		public static double cSolarLuminosity = 3.826E+26;      //Solar luminosity (J/s)

		//The Moon
		public static double cLunarMass = 7.35E+22;             //Lunar mass (kg)
		public static double cLunarRadius = 1738000;            //Lunar radius (m)
		public static double cLunarDistance = 384400000;        //Lunar distance to Earth (m)
		public static double cLunarOrbitalPeriod = 27.322;      //Orbital Period (days)
		public static double cLunarOrbitalEcc = 0.055;          //Orbital Eccentricity 
		public static double cLunarOrbitalIncl = 5.1452778;     //Orbital Inclination

		//The Earth
		public static double cEarthMass = 5.976E+24;            //Mass (kg)
		public static double cEarthEquRadius = 6378164;         //Equatorial Radius (m)
		public static double cEarthAvgDensity = 5.497;          //Average density (g/cm^3)
		public static double cEarthSurfaceGravity = 1.0;        //Surface Gravity (Earth = 1)
		public static double cEarthEscapeVelocity = 11.2;       //Escape Velocity (km/s)
		public static double cEarthSiderealPeriod = 23.9344722; //Sidereal Period (hours)
		public static double cEarthInclination = 23.45;         //Orbital Inclination (Degrees)
		public static double cEarthSMA = 1;                     //Semimajor Axis (AU)
		public static double cEarthOrbitalPeriod = 365.26;      //Orbital Period (days)
		public static double cEarthAvgOrbitalVel = 29.79;       //Average orbital velocity (km/s)
		public static double cEarthOrbitalEcc = 0.0167;         //Orbital Eccentricity
		public static double cEarthInclEcl = 0;                 //Inclination to Ecliptic (Degrees)
		public static double cEarthAvgAlbedo = 0.39;            //Albedo
		public static double cEarthOblate = 0.0034;             //Oblateness
		public static double cEarthMaxOrbit = 1.0167;           //Maximum distance to Sun (AU)
		public static double cEarthMinOrbit = 0.9833;           //Minimum distance to Sun (AU)
		public static double cEarthRotationPeriod = 24.0;       //Period of rotation to Sun (hours)

		//The Mercury
		public static double cMercuryOrbitalEcc = 0.2056;         //Orbital Eccentricity
		public static double cMercuryMaxOrbit = 0.467;            //Maximum distance to Sun (AU)
		public static double cMercuryMinOrbit = 0.306;            //Minimum distance to Sun (AU)
		public static double cMercuryInclEcl = 7.0044444;         //Inclination to Ecliptic (Degrees)
		public static double cMercuryAvgOrbitalVel = 47.9;        //Average orbital velocity (km/s)
		public static double cMercuryOrbitalPeriod = 87.969;      //Orbital Period (days)
		public static double cMercuryRotationPeriod = 1407.504;   //Period of rotation to Sun (hours)
		public static double cMercuryInclination = 0.0;           //Orbital Inclination (Degrees)
		public static double cMercuryMass = 3.31E+21;             //Mass (kg)
		public static double cMercuryAvgDensity = 5.44;           //Average density (g/cm^3)
		public static double cMercurySurfaceGravity = 0.38;       //Surface Gravity (Mercury = 1)
		public static double cMercuryEscapeVelocity = 4.3;        //Escape Velocity (km/s)
		public static double cMercuryAvgAlbedo = 0.1;             //Albedo
		public static double cMercuryOblate = 0.0;                //Oblateness
		public static double cMercurySiderealPeriod = 1407.504;   //Sidereal Period (hours)
		public static double cMercurySMA = 0.3871;                //Semimajor Axis (AU)
		public static double cMercuryEquRadius = 2439000;         //Equatorial Radius (m)

		//The Venus
		public static double cVenusOrbitalEcc = 0.0068;         //Orbital Eccentricity
		public static double cVenusMaxOrbit = 0.7282;           //Maximum distance to Sun (AU)
		public static double cVenusMinOrbit = 0.7184;           //Minimum distance to Sun (AU)
		public static double cVenusInclEcl = 3.3944444;         //Inclination to Ecliptic (Degrees)
		public static double cVenusAvgOrbitalVel = 35.03;       //Average orbital velocity (km/s)
		public static double cVenusOrbitalPeriod = 224.68;      //Orbital Period (days)
		public static double cVenusRotationPeriod = 5832.24;    //Period of rotation to Sun (hours)
		public static double cVenusInclination = 177;           //Orbital Inclination (Degrees)
		public static double cVenusMass = 4.87E+24;             //Mass (kg)
		public static double cVenusAvgDensity = 5.24;           //Average density (g/cm^3)
		public static double cVenusSurfaceGravity = 0.903;      //Surface Gravity (Venus = 1)
		public static double cVenusEscapeVelocity = 10.3;       //Escape Velocity (km/s)
		public static double cVenusAvgAlbedo = 0.76;            //Albedo
		public static double cVenusOblate = 0.0;                //Oblateness
		public static double cVenusSiderealPeriod = 5392.32;    //Sidereal Period (hours)
		public static double cVenusSMA = 0.7233;                //Semimajor Axis (AU)
		public static double cVenusEquRadius = 6052000;         //Equatorial Radius (m)

		//The Mars
		public static double cMarsOrbitalEcc = 0.0934;         //Orbital Eccentricity
		public static double cMarsMaxOrbit = 1.666;            //Maximum distance to Sun (AU)
		public static double cMarsMinOrbit = 1.3814;           //Minimum distance to Sun (AU)
		public static double cMarsInclEcl = 1.8525;            //Inclination to Ecliptic (Degrees)
		public static double cMarsAvgOrbitalVel = 24.13;       //Average orbital velocity (km/s)
		public static double cMarsOrbitalPeriod = 686.95;      //Orbital Period (days)
		public static double cMarsRotationPeriod = 24.6229444; //Period of rotation to Sun (hours)
		public static double cMarsInclination = 25.3166667;    //Orbital Inclination (Degrees)
		public static double cMarsMass = 6.424E+23;            //Mass (kg)
		public static double cMarsAvgDensity = 3.94;           //Average density (g/cm^3)
		public static double cMarsSurfaceGravity = 0.379;      //Surface Gravity (Mars = 1)
		public static double cMarsEscapeVelocity = 5.0;        //Escape Velocity (km/s)
		public static double cMarsAvgAlbedo = 0.16;            //Albedo
		public static double cMarsOblate = 0.009;              //Oblateness
		public static double cMarsSiderealPeriod = 24.622944;  //Sidereal Period (hours)
		public static double cMarsSMA = 1.5237;                //Semimajor Axis (AU)
		public static double cMarsEquRadius = 3398000;         //Equatorial Radius (m)

		//The Jupiter
		public static double cJupiterOrbitalEcc = 0.0484;         //Orbital Eccentricity
		public static double cJupiterMaxOrbit = 5.455;            //Maximum distance to Sun (AU)
		public static double cJupiterMinOrbit = 4.951;            //Minimum distance to Sun (AU)
		public static double cJupiterInclEcl = 1.3080556;         //Inclination to Ecliptic (Degrees)
		public static double cJupiterAvgOrbitalVel = 13.06;       //Average orbital velocity (km/s)
		public static double cJupiterOrbitalPeriod = 4334.3;      //Orbital Period (days)
		public static double cJupiterRotationPeriod = 9.925;      //Period of rotation to Sun (hours)
		public static double cJupiterInclination = 3.0833333;     //Orbital Inclination (Degrees)
		public static double cJupiterMass = 1.899E+27;            //Mass (kg)
		public static double cJupiterAvgDensity = 1.34;           //Average density (g/cm^3)
		public static double cJupiterSurfaceGravity = 2.54;       //Surface Gravity (Jupiter = 1)
		public static double cJupiterEscapeVelocity = 61.0;       //Escape Velocity (km/s)
		public static double cJupiterAvgAlbedo = 0.51;            //Albedo
		public static double cJupiterOblate = 0.0637;             //Oblateness
		public static double cJupiterSiderealPeriod = 9.925;      //Sidereal Period (hours)
		public static double cJupiterSMA = 5.2028;                //Semimajor Axis (AU)
		public static double cJupiterEquRadius = 71494000;        //Equatorial Radius (m)

		//The Saturn
		public static double cSaturnOrbitalEcc = 0.056;          //Orbital Eccentricity
		public static double cSaturnMaxOrbit = 10.07;            //Maximum distance to Sun (AU)
		public static double cSaturnMinOrbit = 9.005;            //Minimum distance to Sun (AU)
		public static double cSaturnInclEcl = 2.4880556;         //Inclination to Ecliptic (Degrees)
		public static double cSaturnAvgOrbitalVel = 9.64;        //Average orbital velocity (km/s)
		public static double cSaturnOrbitalPeriod = 10760;       //Orbital Period (days)
		public static double cSaturnRotationPeriod = 10.6569444; //Period of rotation to Sun (hours)
		public static double cSaturnInclination = 26.4;          //Orbital Inclination (Degrees)
		public static double cSaturnMass = 5.69E+26;             //Mass (kg)
		public static double cSaturnAvgDensity = 0.69;           //Average density (g/cm^3)
		public static double cSaturnSurfaceGravity = 1.16;       //Surface Gravity (Saturn = 1)
		public static double cSaturnEscapeVelocity = 35.6;       //Escape Velocity (km/s)
		public static double cSaturnAvgAlbedo = 0.61;            //Albedo
		public static double cSaturnOblate = 0.102;              //Oblateness
		public static double cSaturnSiderealPeriod = 10.233056;  //Sidereal Period (hours)
		public static double cSaturnSMA = 9.5388;                //Semimajor Axis (AU)
		public static double cSaturnEquRadius = 60330000;        //Equatorial Radius (m)

		//The Uranus
		public static double cUranusOrbitalEcc = 0.0461;         //Orbital Eccentricity
		public static double cUranusMaxOrbit = 20.1;             //Maximum distance to Sun (AU)
		public static double cUranusMinOrbit = 18.3;             //Minimum distance to Sun (AU)
		public static double cUranusInclEcl = 0.7730556;         //Inclination to Ecliptic (Degrees)
		public static double cUranusAvgOrbitalVel = 6.81;        //Average orbital velocity (km/s)
		public static double cUranusOrbitalPeriod = 30685;       //Orbital Period (days)
		public static double cUranusRotationPeriod = 17.2333333; //Period of rotation to Sun (hours)
		public static double cUranusInclination = 97.91666667;   //Orbital Inclination (Degrees)
		public static double cUranusMass = 8.69E+25;             //Mass (kg)
		public static double cUranusAvgDensity = 1.29;           //Average density (g/cm^3)
		public static double cUranusSurfaceGravity = 0.919;      //Surface Gravity (Uranus = 1)
		public static double cUranusEscapeVelocity = 22.0;       //Escape Velocity (km/s)
		public static double cUranusAvgAlbedo = 0.35;            //Albedo
		public static double cUranusSiderealPeriod = 17.233333;  //Sidereal Period (hours)
		public static double cUranusSMA = 19.18;                 //Semimajor Axis (AU)
		public static double cUranusEquRadius = 25559000;        //Equatorial Radius (m)

		//The Neptune
		public static double cNeptuneOrbitalEcc = 0.01;           //Orbital Eccentricity
		public static double cNeptuneMaxOrbit = 30.4;             //Maximum distance to Sun (AU)
		public static double cNeptuneMinOrbit = 29.8;             //Minimum distance to Sun (AU)
		public static double cNeptuneInclEcl = 1.7741667;         //Inclination to Ecliptic (Degrees)
		public static double cNeptuneAvgOrbitalVel = 5.43;        //Average orbital velocity (km/s)
		public static double cNeptuneOrbitalPeriod = 60189;       //Orbital Period (days)
		public static double cNeptuneRotationPeriod = 16.05;      //Period of rotation to Sun (hours)
		public static double cNeptuneInclination = 28.8;          //Orbital Inclination (Degrees)
		public static double cNeptuneMass = 1.03E+26;             //Mass (kg)
		public static double cNeptuneAvgDensity = 1.66;           //Average density (g/cm^3)
		public static double cNeptuneSurfaceGravity = 1.19;       //Surface Gravity (Neptune = 1)
		public static double cNeptuneEscapeVelocity = 25.0;       //Escape Velocity (km/s)
		public static double cNeptuneAvgAlbedo = 0.35;            //Albedo
		public static double cNeptuneOblate = 0.027;              //Oblateness
		public static double cNeptuneSiderealPeriod = 16.05;      //Sidereal Period (hours)
		public static double cNeptuneSMA = 30.0611;               //Semimajor Axis (AU)
		public static double cNeptuneEquRadius = 24750000;        //Equatorial Radius (m)

		//The Pluto
		public static double cPlutoOrbitalEcc = 0.2484;         //Orbital Eccentricity
		public static double cPlutoMaxOrbit = 49.24;            //Maximum distance to Sun (AU)
		public static double cPlutoMinOrbit = 29.64;            //Minimum distance to Sun (AU)
		public static double cPlutoInclEcl = 17.1508333;        //Inclination to Ecliptic (Degrees)
		public static double cPlutoAvgOrbitalVel = 4.73;        //Average orbital velocity (km/s)
		public static double cPlutoOrbitalPeriod = 90465;       //Orbital Period (days)
		public static double cPlutoRotationPeriod = 6.1558333;  //Period of rotation to Sun (hours)
		public static double cPlutoInclination = 119.6;         //Orbital Inclination (Degrees)
		public static double cPlutoMass = 1.2E+22;              //Mass (kg)
		public static double cPlutoAvgDensity = 2.0;            //Average density (g/cm^3)
		public static double cPlutoSurfaceGravity = 0.06;       //Surface Gravity (Pluto = 1)
		public static double cPlutoEscapeVelocity = 1.2;        //Escape Velocity (km/s)
		public static double cPlutoAvgAlbedo = 0.5;             //Albedo
		public static double cPlutoSiderealPeriod = 6.1558333;  //Sidereal Period (hours)
		public static double cPlutoSMA = 39.44;                 //Semimajor Axis (AU)
		public static double cPlutoEquRadius = 1185000;         //Equatorial Radius (m)
	}
}
